package gob.pgr.main;

import gob.pgr.digester.Libreria;
import gob.pgr.digester.Parser;
import gob.pgr.jaxb.JaxbParser;
import gob.pgr.parser.DomParser;
import gob.pgr.parser.SaxParser;
import gob.pgr.xstream.Bbva;

import java.io.File;
import java.io.InputStream;

import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.StaxDriver;

public class ParseMain {

	public static void main(String[] args) throws Exception {
		String nombreArchivo = "ejemplo-parser.xml";
		
		File file = new File(Thread.currentThread().getContextClassLoader().getResource(nombreArchivo).toURI());
		
//		DOM PARSER
		DomParser.parse(file);
		System.out.println(StringUtils.leftPad("", 20, "-"));
		
//		SAX PARSER
		SaxParser.parse(file);
		System.out.println(StringUtils.leftPad("", 20, "-"));
		
//		XSTREAM
		InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(nombreArchivo);
		String xml = IOUtils.toString(inputStream);
		
		XStream xstream = new XStream(new StaxDriver());
		xstream.autodetectAnnotations(true);
		xstream.alias("bbva", Bbva.class);
		Bbva bbva = (Bbva) xstream.fromXML(xml);
		System.out.println("XSTREAM-> Nombre Equipo 1: " +  bbva.getEquipos().get(0).getNombre());
		System.out.println(StringUtils.leftPad("", 20, "-"));
		
//		COMMONS-DIGESTER
		nombreArchivo = "ejemplo-digester.xml";
		
		inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(nombreArchivo);
		xml = IOUtils.toString(inputStream);
		
		Libreria libreria = null;
		
		libreria = Parser.parse1(xml);
		System.out.println("COMMONS-DIGESTER 1-> ISBN Libro 1: " +  libreria.getLibros().get(0).getIsbn());
		System.out.println(StringUtils.leftPad("", 20, "-"));
		
		libreria = Parser.parse2(xml);
		System.out.println("COMMONS-DIGESTER 2-> Precio Libro 2: " +  libreria.getLibros().get(0).getPrecio());
		System.out.println(StringUtils.leftPad("", 20, "-"));
		
		libreria = Parser.parse3(xml);
		System.out.println("COMMONS-DIGESTER 3-> Primer Nombre Autor Libro 3: " +  libreria.getLibros().get(0).getAutor().getPrimerNombre());
		System.out.println(StringUtils.leftPad("", 20, "-"));

//		JAXB
		libreria = (Libreria) JaxbParser.parse(xml, Libreria.class);
		System.out.println("JAXB-> Fecha Publicacion Libro 1: " +  libreria.getLibros().get(0).getFechaPublicacion());
		System.out.println(StringUtils.leftPad("", 20, "-"));
	}
	
}
